<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="Asciidoctor 1.5.8">
<title>RaySession Manual</title>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700">
<style>
/* Asciidoctor default stylesheet | MIT License | http://asciidoctor.org */
/* Uncomment @import statement below to use as custom stylesheet */
/*@import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700";*/
article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}
audio,canvas,video{display:inline-block}
audio:not([controls]){display:none;height:0}
script{display:none!important}
html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}
a{background:transparent}
a:focus{outline:thin dotted}
a:active,a:hover{outline:0}
h1{font-size:2em;margin:.67em 0}
abbr[title]{border-bottom:1px dotted}
b,strong{font-weight:bold}
dfn{font-style:italic}
hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}
mark{background:#ff0;color:#000}
code,kbd,pre,samp{font-family:monospace;font-size:1em}
pre{white-space:pre-wrap}
q{quotes:"\201C" "\201D" "\2018" "\2019"}
small{font-size:80%}
sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
sup{top:-.5em}
sub{bottom:-.25em}
img{border:0}
svg:not(:root){overflow:hidden}
figure{margin:0}
fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
legend{border:0;padding:0}
button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
button,input{line-height:normal}
button,select{text-transform:none}
button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}
button[disabled],html input[disabled]{cursor:default}
input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}
button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
textarea{overflow:auto;vertical-align:top}
table{border-collapse:collapse;border-spacing:0}
*,*::before,*::after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}
html,body{font-size:100%}
body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}
a:hover{cursor:pointer}
img,object,embed{max-width:100%;height:auto}
object,embed{height:100%}
img{-ms-interpolation-mode:bicubic}
.left{float:left!important}
.right{float:right!important}
.text-left{text-align:left!important}
.text-right{text-align:right!important}
.text-center{text-align:center!important}
.text-justify{text-align:justify!important}
.hide{display:none}
img,object,svg{display:inline-block;vertical-align:middle}
textarea{height:auto;min-height:50px}
select{width:100%}
.center{margin-left:auto;margin-right:auto}
.stretch{width:100%}
.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;direction:ltr}
a{color:#2156a5;text-decoration:underline;line-height:inherit}
a:hover,a:focus{color:#1d4b8f}
a img{border:none}
p{font-family:inherit;font-weight:400;font-size:1em;line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
p aside{font-size:.875em;line-height:1.35;font-style:italic}
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em}
h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0}
h1{font-size:2.125em}
h2{font-size:1.6875em}
h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em}
h4,h5{font-size:1.125em}
h6{font-size:1em}
hr{border:solid #dddddf;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em;height:0}
em,i{font-style:italic;line-height:inherit}
strong,b{font-weight:bold;line-height:inherit}
small{font-size:60%;line-height:inherit}
code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)}
ul,ol,dl{font-size:1em;line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
ul,ol{margin-left:1.5em}
ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0;font-size:1em}
ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit}
ul.square{list-style-type:square}
ul.circle{list-style-type:circle}
ul.disc{list-style-type:disc}
ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}
dl dt{margin-bottom:.3125em;font-weight:bold}
dl dd{margin-bottom:1.25em}
abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help}
abbr{text-transform:none}
blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)}
blockquote cite::before{content:"\2014 \0020"}
blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)}
blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
@media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
h1{font-size:2.75em}
h2{font-size:2.3125em}
h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
h4{font-size:1.4375em}}
table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede}
table thead,table tfoot{background:#f7f8f7}
table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
table tr.even,table tr.alt,table tr:nth-of-type(even){background:#f8f8f7}
table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6}
h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
.clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table}
.clearfix::after,.float-group::after{clear:both}
*:not(pre)>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background-color:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed;word-wrap:break-word}
*:not(pre)>code.nobreak{word-wrap:normal}
*:not(pre)>code.nowrap{white-space:nowrap}
pre,pre>code{line-height:1.45;color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;text-rendering:optimizeSpeed}
em em{font-style:normal}
strong strong{font-weight:400}
.keyseq{color:rgba(51,51,51,.8)}
kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background-color:#f7f7f7;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em white inset;box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em #fff inset;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap}
.keyseq kbd:first-child{margin-left:0}
.keyseq kbd:last-child{margin-right:0}
.menuseq,.menuref{color:#000}
.menuseq b:not(.caret),.menuref{font-weight:inherit}
.menuseq{word-spacing:-.02em}
.menuseq b.caret{font-size:1.25em;line-height:.8}
.menuseq i.caret{font-weight:bold;text-align:center;width:.45em}
b.button::before,b.button::after{position:relative;top:-1px;font-weight:400}
b.button::before{content:"[";padding:0 3px 0 2px}
b.button::after{content:"]";padding:0 2px 0 3px}
p a>code:hover{color:rgba(0,0,0,.9)}
#header,#content,#footnotes,#footer{width:100%;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em}
#header::before,#header::after,#content::before,#content::after,#footnotes::before,#footnotes::after,#footer::before,#footer::after{content:" ";display:table}
#header::after,#content::after,#footnotes::after,#footer::after{clear:both}
#content{margin-top:1.25em}
#content::before{content:none}
#header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0}
#header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #dddddf}
#header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #dddddf;padding-bottom:8px}
#header .details{border-bottom:1px solid #dddddf;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap}
#header .details span:first-child{margin-left:-.125em}
#header .details span.email a{color:rgba(0,0,0,.85)}
#header .details br{display:none}
#header .details br+span::before{content:"\00a0\2013\00a0"}
#header .details br+span.author::before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)}
#header .details br+span#revremark::before{content:"\00a0|\00a0"}
#header #revnumber{text-transform:capitalize}
#header #revnumber::after{content:"\00a0"}
#content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #dddddf;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem}
#toc{border-bottom:1px solid #e7e7e9;padding-bottom:.5em}
#toc>ul{margin-left:.125em}
#toc ul.sectlevel0>li>a{font-style:italic}
#toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0}
#toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none}
#toc li{line-height:1.3334;margin-top:.3334em}
#toc a{text-decoration:none}
#toc a:active{text-decoration:underline}
#toctitle{color:#7a2518;font-size:1.2em}
@media screen and (min-width:768px){#toctitle{font-size:1.375em}
body.toc2{padding-left:15em;padding-right:0}
#toc.toc2{margin-top:0!important;background-color:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #e7e7e9;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto}
#toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em}
#toc.toc2>ul{font-size:.9em;margin-bottom:0}
#toc.toc2 ul ul{margin-left:0;padding-left:1em}
#toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em}
body.toc2.toc-right{padding-left:0;padding-right:15em}
body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #e7e7e9;left:auto;right:0}}
@media screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0}
#toc.toc2{width:20em}
#toc.toc2 #toctitle{font-size:1.375em}
#toc.toc2>ul{font-size:.95em}
#toc.toc2 ul ul{padding-left:1.25em}
body.toc2.toc-right{padding-left:0;padding-right:20em}}
#content #toc{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
#content #toc>:first-child{margin-top:0}
#content #toc>:last-child{margin-bottom:0}
#footer{max-width:100%;background-color:rgba(0,0,0,.8);padding:1.25em}
#footer-text{color:rgba(255,255,255,.8);line-height:1.44}
#content{margin-bottom:.625em}
.sect1{padding-bottom:.625em}
@media screen and (min-width:768px){#content{margin-bottom:1.25em}
.sect1{padding-bottom:1.25em}}
.sect1:last-child{padding-bottom:0}
.sect1+.sect1{border-top:1px solid #e7e7e9}
#content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400}
#content h1>a.anchor::before,h2>a.anchor::before,h3>a.anchor::before,#toctitle>a.anchor::before,.sidebarblock>.content>.title>a.anchor::before,h4>a.anchor::before,h5>a.anchor::before,h6>a.anchor::before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em}
#content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible}
#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none}
#content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221}
.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em}
.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic}
table.tableblock.fit-content>caption.title{white-space:nowrap;width:0}
.paragraph.lead>p,#preamble>.sectionbody>[class="paragraph"]:first-of-type p{font-size:1.21875em;line-height:1.6;color:rgba(0,0,0,.85)}
table.tableblock #preamble>.sectionbody>[class="paragraph"]:first-of-type p{font-size:inherit}
.admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%}
.admonitionblock>table td.icon{text-align:center;width:80px}
.admonitionblock>table td.icon img{max-width:none}
.admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #dddddf;color:rgba(0,0,0,.6)}
.admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
.exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px}
.exampleblock>.content>:first-child{margin-top:0}
.exampleblock>.content>:last-child{margin-bottom:0}
.sidebarblock{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
.sidebarblock>:first-child{margin-top:0}
.sidebarblock>:last-child{margin-bottom:0}
.sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
.literalblock pre,.listingblock pre:not(.highlight),.listingblock pre[class="highlight"],.listingblock pre[class^="highlight "],.listingblock pre.CodeRay,.listingblock pre.prettyprint{background:#f7f7f8}
.sidebarblock .literalblock pre,.sidebarblock .listingblock pre:not(.highlight),.sidebarblock .listingblock pre[class="highlight"],.sidebarblock .listingblock pre[class^="highlight "],.sidebarblock .listingblock pre.CodeRay,.sidebarblock .listingblock pre.prettyprint{background:#f2f1f1}
.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;overflow-x:auto;padding:1em;font-size:.8125em}
@media screen and (min-width:768px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:.90625em}}
@media screen and (min-width:1280px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:1em}}
.literalblock pre.nowrap,.literalblock pre.nowrap pre,.listingblock pre.nowrap,.listingblock pre.nowrap pre{white-space:pre;word-wrap:normal}
.literalblock.output pre{color:#f7f7f8;background-color:rgba(0,0,0,.9)}
.listingblock pre.highlightjs{padding:0}
.listingblock pre.highlightjs>code{padding:1em;-webkit-border-radius:4px;border-radius:4px}
.listingblock pre.prettyprint{border-width:0}
.listingblock>.content{position:relative}
.listingblock code[data-lang]::before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:#999}
.listingblock:hover code[data-lang]::before{display:block}
.listingblock.terminal pre .command::before{content:attr(data-prompt);padding-right:.5em;color:#999}
.listingblock.terminal pre .command:not([data-prompt])::before{content:"$"}
table.pyhltable{border-collapse:separate;border:0;margin-bottom:0;background:none}
table.pyhltable td{vertical-align:top;padding-top:0;padding-bottom:0;line-height:1.45}
table.pyhltable td.code{padding-left:.75em;padding-right:0}
pre.pygments .lineno,table.pyhltable td:not(.code){color:#999;padding-left:0;padding-right:.5em;border-right:1px solid #dddddf}
pre.pygments .lineno{display:inline-block;margin-right:.25em}
table.pyhltable .linenodiv{background:none!important;padding-right:0!important}
.quoteblock{margin:0 1em 1.25em 1.5em;display:table}
.quoteblock>.title{margin-left:-1.5em;margin-bottom:.75em}
.quoteblock blockquote,.quoteblock p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify}
.quoteblock blockquote{margin:0;padding:0;border:0}
.quoteblock blockquote::before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)}
.quoteblock blockquote>.paragraph:last-child p{margin-bottom:0}
.quoteblock .attribution{margin-top:.75em;margin-right:.5ex;text-align:right}
.verseblock{margin:0 1em 1.25em}
.verseblock pre{font-family:"Open Sans","DejaVu Sans",sans;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility}
.verseblock pre strong{font-weight:400}
.verseblock .attribution{margin-top:1.25rem;margin-left:.5ex}
.quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic}
.quoteblock .attribution br,.verseblock .attribution br{display:none}
.quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)}
.quoteblock.abstract blockquote::before,.quoteblock.excerpt blockquote::before,.quoteblock .quoteblock blockquote::before{display:none}
.quoteblock.abstract blockquote,.quoteblock.abstract p,.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{line-height:1.6;word-spacing:0}
.quoteblock.abstract{margin:0 1em 1.25em;display:block}
.quoteblock.abstract>.title{margin:0 0 .375em;font-size:1.15em;text-align:center}
.quoteblock.excerpt,.quoteblock .quoteblock{margin:0 0 1.25em;padding:0 0 .25em 1em;border-left:.25em solid #dddddf}
.quoteblock.excerpt blockquote,.quoteblock.excerpt p,.quoteblock .quoteblock blockquote,.quoteblock .quoteblock p{color:inherit;font-size:1.0625rem}
.quoteblock.excerpt .attribution,.quoteblock .quoteblock .attribution{color:inherit;text-align:left;margin-right:0}
table.tableblock{max-width:100%;border-collapse:separate}
p.tableblock:last-child{margin-bottom:0}
td.tableblock>.content{margin-bottom:-1.25em}
table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
table.grid-all>thead>tr>.tableblock,table.grid-all>tbody>tr>.tableblock{border-width:0 1px 1px 0}
table.grid-all>tfoot>tr>.tableblock{border-width:1px 1px 0 0}
table.grid-cols>*>tr>.tableblock{border-width:0 1px 0 0}
table.grid-rows>thead>tr>.tableblock,table.grid-rows>tbody>tr>.tableblock{border-width:0 0 1px}
table.grid-rows>tfoot>tr>.tableblock{border-width:1px 0 0}
table.grid-all>*>tr>.tableblock:last-child,table.grid-cols>*>tr>.tableblock:last-child{border-right-width:0}
table.grid-all>tbody>tr:last-child>.tableblock,table.grid-all>thead:last-child>tr>.tableblock,table.grid-rows>tbody>tr:last-child>.tableblock,table.grid-rows>thead:last-child>tr>.tableblock{border-bottom-width:0}
table.frame-all{border-width:1px}
table.frame-sides{border-width:0 1px}
table.frame-topbot,table.frame-ends{border-width:1px 0}
table.stripes-all tr,table.stripes-odd tr:nth-of-type(odd){background:#f8f8f7}
table.stripes-none tr,table.stripes-odd tr:nth-of-type(even){background:none}
th.halign-left,td.halign-left{text-align:left}
th.halign-right,td.halign-right{text-align:right}
th.halign-center,td.halign-center{text-align:center}
th.valign-top,td.valign-top{vertical-align:top}
th.valign-bottom,td.valign-bottom{vertical-align:bottom}
th.valign-middle,td.valign-middle{vertical-align:middle}
table thead th,table tfoot th{font-weight:bold}
tbody tr th{display:table-cell;line-height:1.6;background:#f7f8f7}
tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
p.tableblock>code:only-child{background:none;padding:0}
p.tableblock{font-size:1em}
td>div.verse{white-space:pre}
ol{margin-left:1.75em}
ul li ol{margin-left:1.5em}
dl dd{margin-left:1.125em}
dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
ol>li p,ul>li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none}
ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em}
ul.unstyled,ol.unstyled{margin-left:0}
ul.checklist{margin-left:.625em}
ul.checklist li>p:first-child>.fa-square-o:first-child,ul.checklist li>p:first-child>.fa-check-square-o:first-child{width:1.25em;font-size:.8em;position:relative;bottom:.125em}
ul.checklist li>p:first-child>input[type="checkbox"]:first-child{margin-right:.25em}
ul.inline{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap;list-style:none;margin:0 0 .625em -1.25em}
ul.inline>li{margin-left:1.25em}
.unstyled dl dt{font-weight:400;font-style:normal}
ol.arabic{list-style-type:decimal}
ol.decimal{list-style-type:decimal-leading-zero}
ol.loweralpha{list-style-type:lower-alpha}
ol.upperalpha{list-style-type:upper-alpha}
ol.lowerroman{list-style-type:lower-roman}
ol.upperroman{list-style-type:upper-roman}
ol.lowergreek{list-style-type:lower-greek}
.hdlist>table,.colist>table{border:0;background:none}
.hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
td.hdlist1{font-weight:bold;padding-bottom:1.25em}
.literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
.colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top}
.colist td:not([class]):first-child img{max-width:none}
.colist td:not([class]):last-child{padding:.25em 0}
.thumb,.th{line-height:0;display:inline-block;border:solid 4px #fff;-webkit-box-shadow:0 0 0 1px #ddd;box-shadow:0 0 0 1px #ddd}
.imageblock.left{margin:.25em .625em 1.25em 0}
.imageblock.right{margin:.25em 0 1.25em .625em}
.imageblock>.title{margin-bottom:0}
.imageblock.thumb,.imageblock.th{border-width:6px}
.imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em}
.image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0}
.image.left{margin-right:.625em}
.image.right{margin-left:.625em}
a.image{text-decoration:none;display:inline-block}
a.image object{pointer-events:none}
sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super}
sup.footnote a,sup.footnoteref a{text-decoration:none}
sup.footnote a:active,sup.footnoteref a:active{text-decoration:underline}
#footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em}
#footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em;border-width:1px 0 0}
#footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;margin-bottom:.2em}
#footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none;margin-left:-1.05em}
#footnotes .footnote:last-of-type{margin-bottom:0}
#content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0}
.gist .file-data>table{border:0;background:#fff;width:100%;margin-bottom:0}
.gist .file-data>table td.line-data{width:99%}
div.unbreakable{page-break-inside:avoid}
.big{font-size:larger}
.small{font-size:smaller}
.underline{text-decoration:underline}
.overline{text-decoration:overline}
.line-through{text-decoration:line-through}
.aqua{color:#00bfbf}
.aqua-background{background-color:#00fafa}
.black{color:#000}
.black-background{background-color:#000}
.blue{color:#0000bf}
.blue-background{background-color:#0000fa}
.fuchsia{color:#bf00bf}
.fuchsia-background{background-color:#fa00fa}
.gray{color:#606060}
.gray-background{background-color:#7d7d7d}
.green{color:#006000}
.green-background{background-color:#007d00}
.lime{color:#00bf00}
.lime-background{background-color:#00fa00}
.maroon{color:#600000}
.maroon-background{background-color:#7d0000}
.navy{color:#000060}
.navy-background{background-color:#00007d}
.olive{color:#606000}
.olive-background{background-color:#7d7d00}
.purple{color:#600060}
.purple-background{background-color:#7d007d}
.red{color:#bf0000}
.red-background{background-color:#fa0000}
.silver{color:#909090}
.silver-background{background-color:#bcbcbc}
.teal{color:#006060}
.teal-background{background-color:#007d7d}
.white{color:#bfbfbf}
.white-background{background-color:#fafafa}
.yellow{color:#bfbf00}
.yellow-background{background-color:#fafa00}
span.icon>.fa{cursor:default}
a span.icon>.fa{cursor:inherit}
.admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
.admonitionblock td.icon .icon-note::before{content:"\f05a";color:#19407c}
.admonitionblock td.icon .icon-tip::before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111}
.admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900}
.admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400}
.admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000}
.conum[data-value]{display:inline-block;color:#fff!important;background-color:rgba(0,0,0,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
.conum[data-value] *{color:#fff!important}
.conum[data-value]+b{display:none}
.conum[data-value]::after{content:attr(data-value)}
pre .conum[data-value]{position:relative;top:-.125em}
b.conum *{color:inherit!important}
.conum:not([data-value]):empty{display:none}
dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
h1,h2,p,td.content,span.alt{letter-spacing:-.01em}
p strong,td.content strong,div.footnote strong{letter-spacing:-.005em}
p,blockquote,dt,td.content,span.alt{font-size:1.0625rem}
p{margin-bottom:1.25rem}
.sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em}
.exampleblock>.content{background-color:#fffef7;border-color:#e0e0dc;-webkit-box-shadow:0 1px 4px #e0e0dc;box-shadow:0 1px 4px #e0e0dc}
.print-only{display:none!important}
@page{margin:1.25cm .75cm}
@media print{*{-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:none!important}
html{font-size:80%}
a{color:inherit!important;text-decoration:underline!important}
a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important}
a[href^="http:"]:not(.bare)::after,a[href^="https:"]:not(.bare)::after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em}
abbr[title]::after{content:" (" attr(title) ")"}
pre,blockquote,tr,img,object,svg{page-break-inside:avoid}
thead{display:table-header-group}
svg{max-width:100%}
p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
#toc,.sidebarblock,.exampleblock>.content{background:none!important}
#toc{border-bottom:1px solid #dddddf!important;padding-bottom:0!important}
body.book #header{text-align:center}
body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em}
body.book #header .details{border:0!important;display:block;padding:0!important}
body.book #header .details span:first-child{margin-left:0!important}
body.book #header .details br{display:block}
body.book #header .details br+span::before{content:none!important}
body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important}
body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always}
.listingblock code[data-lang]::before{display:block}
#footer{padding:0 .9375em}
.hide-on-print{display:none!important}
.print-only{display:block!important}
.hide-for-print{display:none!important}
.show-for-print{display:inherit!important}}
@media print,amzn-kf8{#header>h1:first-child{margin-top:1.25rem}
.sect1{padding:0!important}
.sect1+.sect1{border:0}
#footer{background:none}
#footer-text{color:rgba(0,0,0,.6);font-size:.9em}}
@media amzn-kf8{#header,#content,#footnotes,#footer{padding:0}}
</style>
</head>
<body class="book toc2 toc-left">
<div id="header">
<h1>RaySession Manual</h1>
<div id="toc" class="toc2">
<div id="toctitle">Table of Contents</div>
<ul class="sectlevel1">
<li><a href="#_introduction">Einführung</a></li>
<li><a href="#_simple_use_example">Einfaches Nutzungs Beispiel</a></li>
<li><a href="#_overview_of_session_tools">Überblick Session Werkzeuge</a>
<ul class="sectlevel2">
<li><a href="#_top_row">Obere Zeile </a></li>
<li><a href="#_bottom_row">Untere Zeile</a></li>
</ul>
</li>
<li><a href="#_overview_of_a_client">Überblick Klient</a></li>
<li><a href="#add_application">Anwendung hinzufügen Fenster</a></li>
<li><a href="#add_executable">Kommando hinzufügen Fenster</a></li>
<li><a href="#client_properties">Klient Eigenschaften Fenster</a>
<ul class="sectlevel2">
<li><a href="#_general_tab"><strong>General</strong> Tab</a></li>
<li><a href="#_nsm_tab"><strong>NSM</strong> Tab</a></li>
<li><a href="#_ray_hack_tab"><strong>Ray-Hack</strong> Tab</a></li>
</ul>
</li>
<li><a href="#_network_sessions">Network Sessions</a></li>
<li><a href="#add_program_not_provided">Nicht verfügbare Anwendung hinzufügen</a></li>
<li><a href="#_import_an_nsm_session">NSM Session importieren</a></li>
<li><a href="#_the_daemons_options">Die Dämon Optionen</a>
<ul class="sectlevel2">
<li><a href="#session_folder_shortcuts">Bookmarks für den Session Ordner erstellen</a></li>
<li><a href="#_auto_snapshot_at_save">Automatisch Snapshot beim Sichern erstellen </a></li>
<li><a href="#_desktops_memory">Desktops Status</a></li>
<li><a href="#_session_scripts">Session Skripte</a></li>
<li><a href="#_remember_optional_gui_states">Optionalen GUI Status erinnern</a></li>
</ul>
</li>
<li><a href="#snapshots">Snapshots</a></li>
<li><a href="#session_scripts">Session Skripte</a></li>
<li><a href="#jack_configuration_memory">JACK Konfiguration erhalten</a>
<ul class="sectlevel2">
<li><a href="#_in_which_cases_to_use_it">Anwendungsmöglichkeiten</a></li>
<li><a href="#_usage">Anwendungsweise</a></li>
<li><a href="#_working_principle">Funktionsweise</a></li>
<li><a href="#_special_cases">besondere Fälle</a></li>
</ul>
</li>
<li><a href="#under_the_hood">Unter der Haube</a></li>
<li><a href="#ray_control">RaySession von der Kommandozeile steuern</a></li>
<li><a href="#_frequently_asked_questions">FAQ: Frequently Asked Questions</a></li>
</ul>
</div>
</div>
<div id="content">
<div id="preamble">
<div class="sectionbody">
<div class="paragraph text-right">
<p><em>Other languages:</em> <span class="image"><a class="image" href="../fr/manual.html"><img src="images/flag_fr.jpeg" alt="EN" width="30" height="20"></a></span>
 <span class="image"><a class="image" href="../en/manual.html"><img src="images/flag_en.jpeg" alt="EN" width="30" height="20"></a></span></p>
</div>
<div class="paragraph">
<p><em>for version 0.10.0</em></p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_introduction">Einführung</h2>
<div class="sectionbody">
<div class="paragraph">
<p>RaySession ist ein Audio Session Manager für GNU / Linux. Er ermöglicht, verschiedene Audio Programme in einer Session zu starten und
zu speichern, wodurch die Wiederherstellung einer bereits konfigurierten Session das Ausführen mehrerer Einzelschritte vermeidet.</p>
</div>
<div class="paragraph">
<p>Audio Programme, die in einer Raysession gestartet werden, sollten möglichst mit dem NSM Protokol kompatibel sein. Für eine Vielzahl an
Programmen wie Ardour, Qtractor, Carla, Guitarix, Mamba, Patroneo, ZynAddSubFx und andere ist das bereits gegeben.</p>
</div>
<div class="paragraph">
<p>RaySession setzt ein bereits vorhandenes Audio Setup für die Audio Produktion voraus. Ist dies noch nicht gegeben, muss dies erfolgen
bevor RaySession sinnvoll genutzt werden kann.</p>
</div>
<div class="paragraph">
<p>Nun zur Nutzung: </p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_simple_use_example">Einfaches Nutzungs Beispiel</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Zur Audioproduktion unter GNU / Linux ist die Nutzung des JACK Server sehr empfehlenswert. Bevor eine Session gestartet oder geöffnet wird,
sollte der Jack Server bereits laufen. RaySession hat keine direkte Verbindung zu JACK, er wird aber von den in einer Session laufenden
Anwendungen benötigt.</p>
</div>
<div class="paragraph">
<p>Nehmen wir ein Beispiel, in dem ein Song komponiert wird. Hiefür nutzen wir die Software Ardour und Guitarix, diese beiden Programme
sollten also installiert sein.</p>
</div>
<div class="paragraph">
<p>Um eine neue Session zu starten, klicken Sie oben links auf New Session (<em>oder Strg+N</em>). Ein Dialog Fenster wird sich öffnen.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="images/example_new_session.png" alt="New session">
</div>
</div>
<div class="paragraph">
<p>Oben rechts ist der Root Ordner der Session zu sehen. Hier wird die neue Session gespeichert (eine RaySession ist ein Ordner, der die
Datei <code>raysession.xml</code>, enthält).</p>
</div>
<div class="paragraph">
<p>Geben Sie den gewünschten Namen in das das Eingabefeld ein. Um die neue Session in einem Unterordner zu erstellen, geben Sie den Namen
folgendermassen ein:   <code>Unterordner/My Session</code>.</p>
</div>
<div class="paragraph">
<p>Die Session Vorlage lässt Sie zwischen den folgenden Optionen wählen: </p>
</div>
<div class="ulist">
<ul>
<li>
<p>Eine leere Session Vorlage</p>
</li>
<li>
<p>Eine Vorlage mit gespeicherten JACK Verbindungen</p>
</li>
<li>
<p>Eine durch Skript erstellte Vorlage mit gespeicherten JACK
Konfiguration</p>
</li>
<li>
<p>Eine Vorlage mit grundlegenden Session Skripten (für fortgeschrittene
Nutzer mit Kenntnissen in Shell Skripting)</p>
</li>
<li>
<p>Alle selbst erstellten Vorlagen</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Belassen sie es zunächst bei der Standard Vorlage <strong>With JACK
patch memory</strong>, und klicken Sie auf <strong>Ok</strong>, um die
Session zu starten .</p>
</div>
<div class="imageblock">
<div class="content">
<img src="images/example_session_launched.png" alt="Session launched">
</div>
</div>
<div class="paragraph">
<p>Das Session Fenster wird aktiviert, die Fensterleiste enthält den Namen ihrer Session und eine Klient Anwendung mit dem Namen
<strong>JACK Connections</strong> ist bereits aktiviert. Dieser Klient wird die Verbindungen der JACK Patchbay speichern und wiederherstellen.</p>
</div>
<div class="paragraph">
<p>Um Ardour zu ihrer Session hinzuzufügen, klicken Sie auf <strong>Application</strong>/Anwendung (<em> oder Strg+A</em>), und das Anwendungs
Dialogfenster wird sich öffnen (mehr hierzu unter <a href="_application">Anwendung hinzufügen</a>). Finden Sie auf der
rechten Seite Ardour (je nach Version unter Umständen Ardour5 oder Ardour6 genannt) und Doppelklicken Sie darauf.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="images/example_add_ardour.png" alt="Add Ardour to the session" width="640" height="480">
</div>
</div>
<div class="paragraph">
<p>Ein Ardour Klient wird unter dem JACK Connections Klienten erscheinen und Ardour wird gestartet (normalerweise direkt mit einer leeren Ardour Session).</p>
</div>
<div class="paragraph">
<p>Gehen Sie für Guitarix auf die gleiche Weise vor. </p>
</div>
<div class="imageblock">
<div class="content">
<img src="images/example_session_ready.png" alt="Session ready with Ardour and Guitarix">
</div>
</div>
<div class="paragraph">
<p>Fügen Sie in Ardour eine Spur hinzu (Menu: Spur → Füge Spur hinzu). In dem sich öffnenden Fenster, nennen sie die Spur
<strong>Guitar</strong> und setzen Sie die Kanaleinstellungen auf <em>Stereo</em>.</p>
</div>
<div class="imageblock">
<div class="content">
<a class="image" href="images/example_ardour_track.png"><img src="images/example_ardour_track.png" alt="Add a track in Ardour for Guitarix" width="640" height="480"></a>
</div>
</div>
<div class="paragraph">
<p>Verbinden Sie Guitarix Input in der von Ihnen genutzten Patchbay (Catia, QjackCtl oder ähnlich) oder in Ardour selbst mit dem gegebenen
Hardware Input und den Guitarix Output mit der neuen Ardour Spur. Stellen Sie sicher, dass die Spur Inputs nicht mit den Hardware Inputs
verbunden sind.</p>
</div>
<div class="imageblock">
<div class="content">
<a class="image" href="images/example_catia.png"><img src="images/example_catia.png" alt="JACK patchbay with Catia"></a>
</div>
</div>
<div class="paragraph">
<p>Dies ist ein Beispiel, in dem der Gitarrensound durch Guitarix verarbeitet direkt in Ardour aufgenommen wird. Falls Sie über keine
Gitarre verfügen, können Sie auch in ein Mikrofon singen, es handelt sich lediglich um ein Beispiel.</p>
</div>
<div class="paragraph">
<p>Kehren Sie nun zum Fenster der RaySession zurück. Sichern Sie die aktuelle Session, indem sie oben rechts auf das FloppyDisk Symbol
klicken (<em>oder Ctrl+S</em>). Es ist empfehlenswert, zur Sicherung der Session eine systemweite Tastenkombination zu erstellen. Es hängt
von der jeweiligen Desktopumgebung ab, aber indem Sie zB. die Tastenkombiation <em>Ctrl+Meta+S</em> dem  Kommando
<code>ray_control save</code> (Meta ist die Windows-Taste) zuweisen lässt es sich vermeiden, zum Sichern stets zum RaySession Fenster
zurückkehren zu müssen.</p>
</div>
<div class="paragraph">
<p>Schliessen Sie nun die Session, indem Sie auf das Kreuz im roten Kreis oben rechts klicken (<em>oder Strg+W</em>).</p>
</div>
<div class="paragraph">
<p>Nachdem sich die Session geschlossen hat, klicken Sie auf <strong>Open Session</strong> (<em>oder Strg+O</em>), und Doppelklicken Sie
auf die Session, die Sie gerade erstellt und geschlossen haben, und diese wird sich wieder öffnen.</p>
</div>
<div class="paragraph">
<p>Sie werden alle Programme und JACK Connections so vorfinden, wie sie waren, als die Session geschlossen wurde. Hierdurch wird alles ohne
zusätzlich  Aktionen Ihrerseits wieder nutzbar sein. Ein weiterer Vorteil des modularen Ansatzes im gegebenen Fall ist, dass
nachdem die Gitarre aufgenommen wurde, Guitarix gestoppt werden kann und nicht unnötig Prozessorkapazitäten verwendet, aber trotzdem bei Bedarf
jederzeit wieder gestartet werden kann.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_overview_of_session_tools">Überblick Session Werkzeuge</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_top_row">Obere Zeile</h3>
<div class="imageblock">
<div class="content">
<img src="images/session_top_line.png" alt="Top line of the session frame">
</div>
</div>
<div class="paragraph">
<p>Von links nach rechts:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Das Menu Symbol ermöglicht:</p>
<div class="ulist">
<ul>
<li>
<p><strong>Save as Template: Die aktuelle Session als Vorlage speichern</strong><br>
Die laufende Session wird dann als Vorlage in den Auswahlmöglichkeiten des New Session Dialogs zu finden sein. Da in dieser Vorglage alle
Dateien der Session gespeichert werden, sollten Sessions, die viele Audio Dateien enthalten, nicht als Vorlage gespeichert werden. Erstens
wäre die Kopie sehr gross und zweitens besteht die Gefahr, Dateien unnötig mehrfach zu kopieren, was viel Speicherplatz in Anspruch nehmen
würde.</p>
</li>
<li>
<p><strong>Duplicate: Die aktuelle Session duplizieren</strong><br>
Dies entspricht dem gut bekannten "Speichern als &#8230;&#8203;", im
Unterschied dazu muss RaySession aber die meisten Anwendungen stoppen und  neu starten, um zwischen Sessions zu wechseln. 
Sessions, die viele Audio Dateien enthalten, zu duplizieren, könnte sehr lange dauern, aber eine solche Aktion kann gestoppt werden.</p> 
</li>
<li>
<p><strong>Rename: Session umbenennen</strong><br>
Hierzu müssen alle Klienten gestoppt werden.<br>
Alternativ kann eine Session auch dupliziert  und der Original Ordner der ursprünglichen Session gelöscht werden.<br>
Eine Session kann auch umbenannt werden, indem der Ordner umbenannt wird, aber mit VORSICHT, die Session darf währenddessen nicht laufen.</p>
</li>
</ul>
</div>
</li>
<li>
<p>Das Bleistift Symbol öffnet die  session notes/Anmerkungen.<br>
Hier können Sie hilfreiche Informationen zB. über den Hardware Aufbau, Songtexte, und anderes, wie Grossmutter&#8217;s Eintopf, aufschreiben. Belassen Sie es aber bei den notwendigen Informationen in der nötigen Kürze, da die notes/Anmerkungen aus technischen Gründen  auf 65,000 Buchstaben
beschränkt sind. Andere Anwendungen sind für ausführlichere  Beschreibungen besser geeignet.</p> 
</li>
<li>
<p>Der Name der laufenden Session (hier:  <strong>my session</strong>)</p>
</li>
<li>
<p>Das <strong>Abort session</strong> Symbol, welches die Session ohne
Speicherung schliesst. </p>
</li>
<li>
<p>Das <strong>Close session</strong> Symbol, das die Session speichert
und dann schliesst.<br>
Die laufende Session muss nicht geschlossen werden, um eine weitere zu starten. Einige Klienten sind in der Lage, zwischen verschiedenen
Sessions zu wechseln, was weniger Zeit in Anspruch nehmen kann, als sie alle zu schliessen und neu zu starten.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_bottom_row">Untere Zeile</h3>
<div class="imageblock">
<div class="content">
<img src="images/session_bottom_line.png" alt="Bottom line of the session frame">
</div>
</div>
<div class="paragraph">
<p>Von links nach rechts:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Das Ordner Symbol öffnet den Sesssion Ordner im Dateimanager</p>
</li>
<li>
<p>Das gelbe Stern Symbol mit den favorisierten Anwendungen, falls sie vorhanden sind.</p>
</li>
<li>
<p>Das  <strong>Application</strong> (Anwendungen) Feld, mit welchem bereits vorhandene Anwendungsvorlagen oder selbst erstellte als Klient zur
Session hinzugefügt werden können. Dies ist die empfohlene Methode, eine neue Klient-Anwendung hinzuzufügen. Siehe <a href="#add_application">Anwendung hinzufügen Fenster</a>.</p>
</li>
<li>
<p>Das <strong>Executable</strong> Feld, durch welches eine Anwendung durch das entsprechende  Kommando hinzugefügt werden kann. Dies
benötigen Sie, falls für die Anwendung keine Vorlage vorhanden ist. Siehe <a href="#add_executable">Kommando hinzufügen Fenster</a>.</p>
</li>
<li>
<p>Das Reverse Symbol ermöglicht die Rückkehr zum vorherigen Status der Session. Die Anwendung  <code>git</code> muss installiert sein,
ansonsten ist das Symbol nicht sichtbar.<br>
Siehe <a href="#snapshots">Snapshots</a> für weitere Details.</p>
</li>
<li>
<p>Der Server Status Indikator.<br>
Der Server Status kann sehr kurzfristig erscheinen, aber er wird lange genug bleiben, damit Sie ihn sehen können.
Der Server Status kann folgende Anzeigen haben:</p>
<div class="ulist">
<ul>
<li>
<p><strong>off</strong>: keine Session ist geladen</p>
</li>
<li>
<p><strong>ready</strong>: die Session läuft</p>
</li>
<li>
<p><strong>launch</strong>: die Anwendungen der Session werden geladen</p>
</li>
<li>
<p><strong>copy</strong>: eine Kopie findet statt, entweder als Duplikat oder als Vorlage</p>
</li>
<li>
<p><strong>close</strong>: die Session wird geschlossen</p>
</li>
<li>
<p><strong>snapshot</strong>: Ein Snapshot der Session wird erstellt, so
dass zum aktuellem Status der Session mit dem Reverse Symbol zurückgekehrt werden kann. <br>
Siehe <a href="#snapshots">Snapshots</a>.</p>
</li>
<li>
<p><strong>wait</strong>: der Server wartet, damit Sie nicht sicherbare
Anwendungen selbst schliessen können.</p>
</li>
<li>
<p><strong>script</strong>: ein Skript ist aktiviert</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Falls der Status des Indikators <strong>copy</strong>, <strong>snapshot</strong>, oder <strong>wait</strong> ist, wird durch ein Klicken auf ihn ein Fenster geöffnet, in dem der Fortschritt des Vorgangs gesehen werden kann.</p> 
</div>
</li>
<li>
<p>Das <strong>Save Session</strong> Symbol.</p>
</li>
<li>
<p>Der Papierkorb, in welchem die entfernten Klienten zu finden sind. Diese können wiederhergestellt oder inklusive aller Dateien dauerhaft
aus dem Session Ordner entfernt werden.</p>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_overview_of_a_client">Überblick Klient</h2>
<div class="sectionbody">
<div class="imageblock">
<div class="content">
<img src="images/client_carla.png" alt="trame d&#8217;un client">
</div>
</div>
<div class="paragraph">
<p>Von links nach rechts:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Das Symbol der Klient Anwendung enthält ein Menu mit den folgenden Aktionen</p>
<div class="ulist">
<ul>
<li>
<p><strong>Anwendung als Vorlage sichern</strong><br>
Die Vorlage wird im  <a	href="#add_application">Anwendung hinzufügen Fenster</a> erscheinen. Die gesicherte Vorlage ermöglicht, eine
Anwendung direkt  mit einer bestimmten Konfiguration zu starten (Ardour mit bestimmten Tracks, Hydrogen  mit bestimmten Drumkits ...). Seien Sie mit dieser Speicherung vorsichtig, falls der Klient viele Audio Dateien enthält, da alle Dateien des Klienten kopiert werden .</p>
</li>
<li>
<p><strong>Umbenennen</strong><br>
Den Namen des Klienten, rechts vom Symbol sichtbar, ändern. Dieser Name dient lediglich ihrer Organisation. </p>
</li>
<li>
<p><strong>zum vorherigen Status zurückkehren</strong><br>
Stellt den vorherigen Status des Klienten wieder her, siehe <a href="#snapshots">Snapshots</a>.<br> Sie können aber nicht zu einem Status vor dem Umbenennen einer Session zurückkehren, in diesem Fall müssen sie den Status der gesamten Session
wieder herstellen.</p>
</li>
<li>
<p><strong>Eigenschaften</strong><br>
Öffnet das Eigenschaften Fenster des Klienten.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Dieses Menü erscheint auch, indem Sie irgendwo in der Klientzeile den rechten Mausklick ausführen.</p>
</div>
</li>
<li>
<p>Der Name des Klienten (hier Carla), der durch rechter Mausklick → Rename (Umbenennen)  leicht geändert werden kann</p>
</li>
<li>
<p>Je nach Art und Möglichkeiten des Klienten sehen sie noch: </p>
<div class="ulist">
<ul>
<li>
<p>ein Auge (unter Umständen durchgestrichen), welches bedeutet, dass der Klient NSM kompatibel ist und durch Klicken auf das Symbol Auge
gezeigt oder verborgen werden kann.</p>
</li>
<li>
<p>Das <strong>Hack</strong> Feld deutet an, dass der Klient entweder nicht NSM kompatibel ist oder bloss nicht mit 
dem NSM Protokoll gestartet wurde. Durch Mausklick auf <strong>Hack</strong> kann das Klient Eigenschaften
Fenster geöffnet werden, in dem die Art, wie der Klient gestartet wird, geändert werden kann.</p>
</li>
</ul>
</div>
</li>
<li>
<p>Das Start Symbol, welches ausgegraut ist, falls der Klient bereits gestartet ist.</p>
</li>
<li>
<p>Das Stop Symbol, welches ausgegraut ist, falls der Klient bereits gestoppt ist.<br>
Falls der Klient nicht stoppt, wird das Symbol rot und Sie können den Klienten durch kill beenden. Seien Sie aber geduldig und nutzen Sie dies nur, wenn der Klient völlig eingefroren zu sein scheint. Ihn zu killen könnte zu Problemen führen, auch wenn Sie kaum dafür im  Gefängnis landen werden.</p> 
</li>
<li>
<p>der Status des Klienten: </p>
<div class="ulist">
<ul>
<li>
<p><strong>stopped</strong>: Der Klient ist gestoppt</p>
</li>
<li>
<p><strong>ready</strong>: der Klient ist gestartet und alles ist in Ordnung</p>
</li>
<li>
<p><strong>open</strong>: Die Klient Anwendung  wird geöffnet und läd das Projekt,
bitte gedulden Sie sich</p>
</li>
<li>
<p><strong>close</strong>: Die Klient Anwendung wird geschlossen</p>
</li>
<li>
<p><strong>launch</strong>: Falls der Status sich von launch nicht ändert, heisst dies: </p>
<div class="ulist">
<ul>
<li>
<p>Es handelt sich um einen Ray-Hack Klienten ohne Konfigurations Datei</p>
</li>
<li>
<p>es ist als NSM Klient gestartet, aber nicht NSM kompatibel, und kann deshalb nicht speichern. Bei manchen Anwendungen, wie einem Patchbay (z.B. Catia) oder eine Anwendung, die nicht gespeichert werden muss (Qrest), kann es sinnvoll sein, diese so zu starten.</p>
</li>
</ul>
</div>
</li>
<li>
<p><strong>switch</strong>: Der Klient wechselt das Projekt während die Session gewechselt wird.</p>
</li>
</ul>
</div>
</li>
<li>
<p>Das Floppy Disk Symbol, mit welchem der Klient gespeichert werden kann.<br>
Ist die Maus über diesem Symbol gehalten, ist das Folgende zu sehen</p>
<div class="ulist">
<ul>
<li>
<p>3 rote Punkte: Der Klient enthält nicht gespeicherte Änderungen</p>
</li>
<li>
<p>ein grünes V: der Klient enthält keine nicht gespeicherten Änderungen</p>
</li>
<li>
<p>ein orangenes Ausfrufezeichen: es handelt sich nicht um einen NSM kompatiblen Klienten und damit ist es nicht möglich, das Projekt zu speichern.Sie müssen dies selbst tun.</p>
</li>
</ul>
</div>
</li>
<li>
<p>Das rote Kreuz ermöglicht es Ihnen, den Klienten in den Papierkorb zu löschen.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="add_application">Anwendung hinzufügen Fenster</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Durch Klicken auf das  <strong>Application</strong> Feld (oder <em> Strg+A</em>) öffnet sich das Fenster, um eine Anwendung hinzuzufügen. </p>
</div>
<div class="imageblock">
<div class="content">
<img src="images/add_application.png" alt="Add Application window">
</div>
</div>
<div class="paragraph">
<p>Die Liste mit den verfügbaren Anwendungen ist auf der rechten Seite.
Falls die Software, die sie hinzufügen wollen, hier nicht zu finden ist, siehe <a href="#add_program_not_provided">Nicht verfügbare Anwendung hinzufügen</a>.</p>
</div>
<hr>
<div class="paragraph">
<p>Oben links ist das  Filter Feld</p>
</div>
<div class="imageblock">
<div class="content">
<img src="images/add_application_filter.png" alt="Filter block of Add Application window">
</div>
</div>
<div class="ulist">
<ul>
<li>
<p>Das Filter Feld erlaubt Ihnen, durch einen Teil des Namens der Anwendung nur die Anwendungen anzuzeigen, die diesen Teil enthalten.</p>
</li>
<li>
<p>Die <strong>Factory</strong> Checkbox zeigt die in RaySession integrierten oder durch die Distribution verfügbaren Vorlag.</p>
</li>
<li>
<p><strong>User</strong> zeigt die durch den User durch <strong>Save as application template</strong> erstellten Vorlagen.</p>
</li>
<li>
<p><strong>NSM</strong> zeigt die NSM kompatiblen oder als solche gestartete Klienten .</p>
</li>
<li>
<p><strong>Ray-Hack</strong> zeigt die ohne NSM Protokoll startbaren Klienten</p>
</li>
</ul>
</div>
<hr>
<div class="paragraph">
<p>Unten links ist das Informations Feld zu der gewählten  Vorlage auf der rechten Seite.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="images/add_application_infos.png" alt="Informations block of Add Application window">
</div>
</div>
<div class="ulist">
<ul>
<li>
<p>Oben rechts in diesem Feld ist ein Stern Symbol, mit welchem die Vorlage zu den Favoriten hinzugefügt werden kann. </p>
</li>
<li>
<p>Falls es eine durch den User erstellte Vorlage ist, kann durch ein <strong>User</strong> Feld die Vorlage gelöscht werden. </p>
</li>
<li>
<p>Das Symbol unten rechts in diesem Feld ermöglicht Ihnen, das Fenster mit allen Eigenschaften dieser Vorlage zu öffnen. Siehe auch <a href="#client_properties">Klient Eigenschaften Fenster</a>. Dies dient lediglich der Information.</p>
</li>
</ul>
</div>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 100%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p
class="tableblock"><strong>Tip:</strong> Dieses Fenster verhält sich wie <em>Alt+F2</em> auf dem Desktop, und Vorlagen können
schnell hinzugefügt werden. <br>
Um zum Beispiel aus dem Hauptfenster der RaySession Carla hinzuzufügen, benutzen sie die Keyboard Kombination <em>Ctrl+A</em>, tippen Sie im
Suchfeld dann <code>carla</code>, und wählen Sie die entsprechende
Vorlage durch die Pfeil-oben/unten Taste aus, und bestätigen das Hinzufügen durch die Enter Taste.</p></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="sect1">
<h2 id="add_executable">Kommando hinzufügen Fenster</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Das Fenster, mit dem ein ausführbares Kommando hinzugefügt werden
kann, öffnet sich durch Klicken auf das  <strong>Executable</strong> Feld (<em>oder Ctrl+E</em>).</p>
</div>
<div class="imageblock">
<div class="content">
<img src="images/add_executable.png" alt="Add Executable window">
</div>
</div>
<div class="paragraph">
<p>Dieses Fenster muss benutzt werden, falls der Klient sich nicht in
der Liste vom  <a href="#add_application">Anwendung hinzufügen Fenster</a> findet. Dieses Fenster ist sehr übersichtlich: ein
Fenster, in dem das ausführbare Kommando eingegeben wird, eine Checkbox
für das <strong>NSM Protocol</strong> und das Pfeil-nach-unten-Symbol für erweiterte Optionen.</p>
</div>
<div class="paragraph">
<p>Lassen sie die Checkbox für das NSM Protokoll aktiviert, wenn:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>das zu startende Programm NSM kompatibel ist (wenn es trotzdem nicht
in der Liste zu finden ist, lassen Sie es uns wissen!)</p>
</li>
<li>
<p>Das Programm ein Werkzeug ist, welches Projekte nicht sichern muss (QRest, Catia…). Der Status eines solchen Programmes wird immer auf <strong>launch</strong> bleiben und nie zu <strong>ready</strong> wechseln, was unbedeutend ist, da kein Projekt gesichert werden muss.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Falls in der Checkbox das <strong>NSM protocol</strong> aktiviert ist, kann nicht der volle Pfad wie <code>/usr/bin/my_program</code> genutzt werden, es muss  <code>my_program</code> genutzt werden. Ebenso können weder mit noch ohne aktiviertem NSM Protokoll Argumente von Kommandos genutzt werden.</p>
</div>
<div class="paragraph">
<p>Ist in der Checkbox das  <strong>NSM Protocol</strong> deaktiviert, gleicht dies dem Starten eines Programms durch das Ray-Hack Pseudo-Protokoll.</p>
</div>
<div class="paragraph">
<p>Wenn Sie auf das <strong>advanced options</strong> (erweiterte Optionen) Feld klicken, wird sich ein Block mit den erweiterten Optionen öffnen</p>
</div>
<div class="imageblock">
<div class="content">
<img src="images/add_executable_plus.png" alt="Advanced Add Executable window">
</div>
</div>
<div class="ulist">
<ul>
<li>
<p>Die <strong>Start the client</strong> Checkbox. Ist sie nicht aktiviert, wird der Klient lediglich hinzugefügt und nicht automatisch 
direkt gestartet.</p>
</li>
<li>
<p>Die Multiple Choice Box <strong>Prefix Mode</strong>, welche das Präfix der Klienten Dateien bestimmt</p>
<div class="ulist">
<ul>
<li>
<p> <strong>Session Name</strong>, die Dateinamen beginnen mit dem Namen der Session, dies ist die default Voreinstellung</p>
</li>
<li>
<p> <strong>Klient Name</strong>, die Dateinamen beginnen mit dem Namen des Klienten, wie es auch beim Neue Session Manager der Fall ist.</p>
</li>
<li>
<p> <strong>Custom</strong>, die Dateinamen beginnen mit der Eingabe, die Sie im darunter liegenden Feld <strong>Prefix</strong> angeben .</p>
</li>
</ul>
</div>
</li>
<li>
<p>Das <strong>Prefix</strong> Feld ist nur aktiv, wenn der <strong>Prefix Mode</strong> auf Custom gestellt wurde.</p>
</li>
<li>
<p>Das <strong>Klient ID</strong> Feld (der Klient Identifikator). Nutzen Sie lediglich alphanumerische Zeichen oder '_'.<br>
Dies ist nützlich, wenn Sie in der Session bestehende Projekte bestimmen und starten wollen. Auch, wenn Sie Session Projekte ausserhalb der
bestehenden Session laden wollen. Es gibt keinen einfachere Weise, dies zu tun. Die Details hängen stark von der jeweilig genutzten Anwendung
ab. Falls Sie eine in der Session  bereits verwendete ID eingeben, wird RaySession darauf entsprechend lautstark hinweisen. </p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="client_properties">Klient Eigenschaften/Properties Fenster</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Das Eigenschaften Fenster lässt sich öffnen, indem sie im Menu des Klienten (öffnet sich durch rechten Mausklick) auf Eigenschaften/Properties klicken</p>
</div>
<div class="paragraph">
<p>Das Eigenschaften Fenster hat 2 Tabs, "General" (Allgemein) und einen Tab für das genutzte Protokoll. Dieser hängt von dem vom Klienten genutzten Protokoll ab und kann NSM, Ray-Hack oder Ray-Net heissen. </p>
</div>
<div class="sect2">
<h3 id="_general_tab"><strong>General</strong> Tab</h3>
<div class="imageblock">
<div class="content">
<img src="images/properties_general.png" alt="Klient properties">
</div>
</div>
<div class="paragraph">
<p>Der obere Block des General Tab zeigt ID, Protokoll, Label,
Beschreibung/description und das Iconsymbol des Klienten.<br>
Falls Sie diese Eingaben nicht bearbeiten, werden die Werte aus der entsprechenden .desktop Datei der verwendeten Anwendung genutzt, falls
vorhanden. Falls Sie wissen möchten, welche .desktop Datei hierfür verwendet wird, nutzen sie den Befehl <code>ray_control client CLIENT_ID get_properties</code> in einem Terminal-Emulator (ersetzen Sie CLIENT_ID mit der ID des Klienten).</p>
</div>
<div class="paragraph">
<p>Darunter liegt der Block Snapshots, siehe <a href="#snapshots">Snapshots</a>.</p>
</div>
<div class="paragraph">
<p>Unter diesem Block ist die Checkbox  <strong>Prevent stop without recent or possible save</strong> (Stop ohne vorherige oder
kürzliche Sicherung), die das Fenster beim stoppen eines Klienten betrifft. Ist die Checkbox deaktiviert, wird der Klient ohne ein Fenster
mit entsprechender Warnung über Sicherungen gestoppt werden.<br>
</div>
<div class="ulist">
<ul>
<li>
<p>Der Klient kann nicht durch RaySession gespeichert werden</p>
</li>
<li>
<p>Der Klient enthält ungespeicherte Änderungen</p>
</li>
<li>
<p>Der Klient wurde länger als eine Minute nicht gespeichert</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Ob es sinnvoll ist, die Checkbox aktiviert oder deaktiviert zu haben, hängt davon ab, ob eine Speicherung wichtig ist; dies müssen Sie
entscheiden. Falls Sie unschlüssig sind, können Sie im Warnfenster beim
Schliessen <strong>Don&#8217;t prevent to stop this client again</strong> (nicht nochmals die Schliessung des Klienten
verhindern) aktivieren, und  <strong>Prevent stop without recent or possible save</strong> wird automatisch deaktiviert.</p>
</div>
</div>
<div class="sect2">
<h3 id="_nsm_tab"><strong>NSM</strong> Tab</h3>
<div class="imageblock">
<div class="content">
<img src="images/properties_nsm.png" alt="NSM Klient properties">
</div>
</div>
<div class="paragraph">
<p>Der hier genutzte  <strong>Name</strong> für den Klienten wird durch ihn selbst bestimmt.<br>
<strong>capabilities</strong> (Kapazitäten) sind jene, die der Klient
übermittelt, während er startet. Entsprechend ist dieses Feld bei nicht
gestartetem Klienten leer.</p>
</div>
<div class="paragraph">
<p>Wird das Feld executable (ausführbarer Befehl) bearbeitet, kann hierdurch geändert werden, wie der Klient gestartet wird. Die geänderte Startweise sollte in der
Lage sein, das gegebene Projekt des Klienten auszuführen. Sinvoll ist die Bearbeitung des executable Felds zB falls Sie 2 verschiedene Version
von Ardour installiert haben, eine wird durch <code>ardour</code>, die andere durch  <code>Ardour6</code> gestartet, und Sie wollen die
genutzte Version ändern.</p>
</div>
<div class="paragraph">
<p>Ansonsten wird dringend davon abgeraten, die genutzten Argumente zu ändern, und um Dateien als Argument zu laden ist es völlig unbrauchbar. </p>
</div>
</div>
<div class="sect2">
<h3 id="_ray_hack_tab"><strong>Ray-Hack</strong> Tab</h3>
<div class="paragraph">
<p>Falls der Klient vom Typ Ray-Hack ist, stehen Ihnen hier viele Felder zur Verfügung. Das sind aber nicht unbedingt gute Nachrichten. Die Grundidee ist es zu ermöglichen, eine Anwendung, die (noch) nicht mit dem NSM Protokoll kompatibel ist, in der Session laden zu können. Das NSM Protokoll ist, falls sauber im Klienten implementiert, wesentlich komfortabler und verlässlicher als dieser Hack. Dies im Hinterkopf lässt sich dennoch sagen, dass wir zwar in allen Audio Programmen das NSM Protokoll erwarten können, es aber auch nützliche Programme gibt, bei denen dies nicht der Fall ist.</p>
</div>
<div class="paragraph">
<p>Das Ray-Hack Pseudo-Protokoll nutzt die Attribute von Proxies (nsm-proxy oder ray-proxy), aber der Klient wird direkt in der Session
gestartet.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="images/properties_ray_hack.png" alt="Ray-Hack Klient properties">
</div>
</div>
<div class="sect3">
<h4 id="_launch_block">Launch block</h4>
<div class="imageblock">
<div class="content">
<img src="images/ray_hack_launch.png" alt="ray hack launch">
</div>
</div>
<div class="ulist">
<ul>
<li>
<p><strong>Folder</strong> ist der Ordner Name für diesen Klienten im
Session Ordner.</p>
</li>
<li>
<p><strong>Executable</strong> ist das Kommando, mit dem die Anwendung gestartet wird.</p>
</li>
<li>
<p><strong>Config file</strong> ist die Projekt Datei, die wir mit dieser Anwendung öffnen wollen. Es ist sehr zu empfehlen, eine Datei zu
benennen, die sich im Klienten Ordner befindet.<br>
Die Variable <code>$RAY_SESSION_NAME</code> wird automatisch durch den Namen der Session ersetzt.<br>
Falls dieses Feld leer ist, wird der Status des Klienten immer auf <strong>launch</strong> bleiben und nicht zu  <strong>ready</strong>
wechseln. In manchen Fällen mag es besser sein, einen beliebigen Wert einzugeben anstatt ihn leer zu lassen.</p>
</li>
<li>
<p>Das <strong>Browse</strong> Feld öffnet ein Dialogfenster, um die Projekt Datei zu finden und im <strong>Configuration file</strong> Feld einzufügen.</p>
</li>
<li>
<p>Das <strong>Arguments</strong> Feld enthält etwaige Argumente für das
Kommando.<br>
Die Argumente werden wie in der Kommandozeile getrennt, vergessen Sie
also falls nötig nicht " und '.<br>
Um zum Beispiel das Kommando  <code>my_command my_argument_1 "my argument 2"</code> zu reproduzieren, geben Sie
<code>my_command</code> im  <strong>Executable</strong> Feld und <code>my_command my_argument_1 "my argument 2 "</code> im
<strong>Arguments</strong> Feld ein.</p>
</li>
</ul>
</div>
</div>
<div class="sect3">
<h4 id="_signals_block">Signals block</h4>
<div class="imageblock">
<div class="content">
<img src="images/ray_hack_signals.png" alt="ray hack signals">
</div>
</div>
<div class="ulist">
<ul>
<li>
<p><strong>Save Signal</strong> kann nur sehr selten genutzt werde. Für Anwendungen, die mit dem alten LASH
Protokoll kompatibel sind, kann es SIGUSR1 sein. Ansonsten lassen Sie es auf <em>None</em>, wenn keine Speichermethode vorhanden ist, können wir
sie nicht aus dem Ärmel zaubern.</p>
</li>
<li>
<p><strong>Stop Signal</strong> wird normalerweise SIGTERM sein. Ändern
Sie dies nur, wenn die Anwendung sich nicht korrekt schliesst.</p>
</li>
<li>
<p> Falls die <strong>Wait for a window before considered it ready</strong> (auf Fenster warten) Checkbox aktiviert ist, wechselt der Status des
Klienten erst zu  <strong>ready</strong> sobald das Anwendungsfenster sich geöffnet hat.<br>
Falls <code>wmctrl</code> nicht installiert ist oder der WindowManager
ihn aus Kompatibilitätsgründen nicht nutzen kann, wird der Status sonst zu schnell, eine halbe
Sekunde, nach dem Starten auf  <strong>ready</strong> wechseln.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Mit <code>ray_control</code> können andere Signale als die der
Multiple Choice Box zugewiesen werden.<br>
<code>ray_control client CLIENT_ID set_properties save_sig:22</code> wird zum Beispiel das SIGTTOU Signal für das Sichern des Klienten mit
CLIENT_ID zuweisen.<br>
Das Kommando <code>kill -l</code> zeigt Ihnen im Terminal-Emulator die möglichen Signale und ensprechenden Nummern.</p>
</div>
</div>
<div class="sect3">
<h4 id="_non_saveable_management_block">Non-saveable management block</h4>
<div class="imageblock">
<div class="content">
<img src="images/ray_hack_non_saveable.png" alt="ray hack non saveable">
</div>
</div>
<div class="paragraph">
<p>Dieser Block ist nur aktiv, falls <strong>Save Signal</strong> auf <em>None</em> gestellt ist.</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Falls <strong>Tell user to close program himself at session close</strong> (Nutzer informieren, dass er die Anwendung selbst
schliessen muss) gewählt ist, gilt der Klient als nicht speicherbar und ein orangenes Ausrufezeichen ist vor dem Save Symbol sichtbar. Wird die
Session beendet, wird RaySession warten, bis Sie die Anwendung selbst geschlossen haben, da es unklar ist, ob Sie ungespeicherte Änderungen haben.</p>
</li>
<li>
<p>Falls <strong>Try to close window gracefully</strong> (Fenster elegant schliessen) gewählt ist, wird RaySession beim Beenden der Session versuchen, die Anwendung so zu schliessen, als würden Sie es tun. Dies ist sehr nützlich, falls die Anwendung auch im Fall von keinen nicht gespeicherten Änderungen einen Bestätigungsdialog erfordert (was oft der Fall ist). Falls <code>wmctrl</code> nicht installiert oder mit dem WindowManager nicht kompatibel ist, müssen Sie die Anwendung in jedem Fall selbst schliessen.</p>
</li>
</ul>
</div>
</div>
<div class="sect3">
<h4 id="_test_area">Test area</h4>
<div class="imageblock">
<div class="content">
<img src="images/ray_hack_test_zone.png" alt="ray hack test zone">
</div>
</div>
<div class="paragraph">
<p>Das Areal gibt Ihnen die Möglichkeit Start, Stop und Einstellungen speichern zu testen, ohne vorher <strong>Save the changes</strong> (Änderungen Speichern) auszuführen.</p>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_network_sessions">Network Sessions</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Durch eine Network Session kann auf einem weiteren Computer zeitgleich eine weitere Session gestartet werdeDurch eine Network Session kann auf einem weiteren Computer zeitgleich eine weiter Session gestartet werden. Dies ist besonders nützlich, wenn Sie net-jack nutzen um das DSP zu entlasten, z.B. um ressourcenintensive Effekte auf einer anderen Maschine zu starten.</p>
</div>
<div class="paragraph">
<p>Network Sesssions arbeiten nach dem Master-Slave Prinzip. Eine Session ist der Master und kann mehrere Slave sessions haben, die wiederum Master von anderen Slave Sessions sein können, aber dies wäre eher ungewöhnlich. Organisieren Sie dies besser einfach: Ein Master und ein oder mehrere Slaves von diesem.</p>
</div>
<div class="paragraph">
<p>Um eine Network Session (also einen Slave) zu starten, nutzen Sie die <strong>Network Session</strong> Anwendungs Vorlage aus dem Anwendungs Fenster und folgen Sie den Anweisungen.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="images/network_session_template.png" alt="Add a network session">
</div>
</div>
<div class="paragraph">
<p>Starten sie auf dem Remote Computer durch den Befehl <code>ray-daemon -p 1234</code> (<code>1234</code> ist lediglich ein Beispiel, Sie könne dies frei wählen) einen Dämon. Dieser wird etwas entsprechendes im Terminal anzeigen:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code>[ray-daemon]URL : osc.udp://192.168.1.00:1234/`
[ray-daemon]      osc.udp://nom-de-machine:1234/`
[ray-daemon]ROOT: /home/utilisateur/Ray Sessions reseau</code></pre>
</div>
</div>
<div class="imageblock">
<div class="content">
<img src="images/network_session_invitation.png" alt="Configure a network session">
</div>
</div>
<div class="paragraph">
<p>Kopieren Sie eine der beiden URLs in das network session invitation window. Die erste Variante (startend mit osc.udp://192.168.) muss mit Sicherheit funktionieren, die zweite wird nur funktioneren, wenn <code>/etc/hosts</code> vom  dem Master Computer einen Eintrag für den Slave Computer enthält. Den Namen des Slave Computers in <code>/etc/hosts</code> einzutragen und die zweite Variante der URL zu nutzen ist aber vorzuziehen, da sich die Addresse 192.168 ändern kann falls sich der Remote Computer durch den Wechsel von wired zu wifi oder durch eine Neuinstallation der Distribution ändern kann.</p>
</div>
<div class="paragraph">
<p>Auf dem Master Computer haben Sie nun 2 RaySession Fenster, eines kontrolliert die Master Session, das andere die Slave Session. Sie erkennen die Slave Session daran, dass das Fenster weder die Toolbar mit  (<strong>New Session</strong>, <strong>Open Session</strong>, <strong>Control</strong>), noch <strong>Abort session</strong> oder <strong>Close session</strong> Felder hat.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="images/network_session_child.png" alt="network session child">
</div>
</div>
<div class="paragraph">
<p>Wie viele andere NSM Anwendungen kann das Slave Fenster verborgen werden.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="images/network_session_client.png" alt="network session client">
</div>
</div>
<div class="paragraph">
<p>Wenn Sie auf dem Slave Computer das Kommando <code>raysession -p 1234</code> nutzen, haben Sie das Slave Fenster doppelt, eines auf jedem Computer.</p>
</div>
<div class="paragraph">
<p><strong>Tip:</strong> Nutzen Sie auf dem Slave Computer <code>ray-daemon -p 1234</code> im Startup.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="add_program_not_provided">Nicht verfügbare Anwendung hinzufügen</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Falls die Anwendung, die sie hinzufügen möchten, das Speichern von Projekten nicht leisten muss, klicken Sie auf  <strong>Executable</strong>, fügen Sie den ausführbaren Namen der Anwendung ein und klicken auf <strong>Ok</strong>. Ansonsten folgen Sie dem Beispiel:</p>
</div>
<div class="paragraph">
<p>Wir werden als Beispiel Audacity zu der bestehenden Session hinzufügen. Diese Anwendung ist sehr bekannt und gewöhnlicherweise in Audio Distributionen vorinstalliert.</p>
</div>
<div class="paragraph">
<p>Klicken Sie auf  <strong>Executable</strong> (<em>oder nutzen Sie Ctrl+E</em>).
In dem sich öffnenden Fenster <a href="#add_executable">Add executable window</a> (auführbare Anwendung hinzufügen), entfernen Sie die Auswahl für das <strong>NSM Protocol</strong>, fügen Sie  <code>audacity</code> in das  <strong>Executable</strong> Feld ein und klicken auf <strong>Ok</strong>.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="images/audacity_executable.png" alt="Add Executable window well done">
</div>
</div>
<div class="paragraph">
<p>Ein neuer Klient wird erstellt, sein Eigenschaften Fenster öffnet sich im  <strong>Ray-Hack</strong> Tab und Audacity wird gestartet.</p>
</div>
<div class="paragraph">
<p>Wir werden nun sofort ein leeres Projekt von Audacity im Ordner des Klienten speichern. Dieser befindet sich im Ordner der Session und hat den Namen, den Sie ihm im <strong>Folder:</strong> Feld im <strong>Ray-Hack</strong> Tab oben gelegen gegeben haben. Wir werden dieses Projekt GENAU so nennen, wie die aktuelle RaySession. Nutzen Sie in Audacity hierfür:  <em>Menu → File → Save project → Save project</em> (Menu, Datei, Projekt Sichern, Sichern).</p> 
</div>
<div class="imageblock">
<div class="content">
<img src="images/audacity_save%20project.png" alt="Save empty Audacity project">
</div>
</div>
<div class="paragraph">
<p>Klicken Sie auf <strong>Validate</strong> (Bestätigen) falls sich ein Warnfenster öffnet.<br>
In der sich öffnenden Box um die Datei zu speichern, finden Sie den Session Ordner unten links (siehe <a href="#session_folder_shortcuts">Provide bookmarks for session folder</a>). Klicken Sie darauf, um ihn zu öffnen. Darin sollten Sie den Ordner des Klienten mit dem Namen, der ihm im RayHack Tab gegeben wurde,finden. Nutzen Sie diesen. Fügen Sie in der Speicherbox den genauen Namen, den sie der Session im  <strong>Name:</strong> Feld gegeben haben und bestätigen Sie.</p>
</div>
<div class="imageblock">
<div class="content">
<a class="image" href="images/audacity_save_file.png"><img src="images/audacity_save_file.png" alt="Where to save Audacity project" width="640" height="480"></a>
</div>
</div>
<div class="paragraph">
<p>Schliessen Sie Audacity.<br>
Klicken Sie oben rechts im <strong>Ray-Hack</strong> Tab vom Eigenschaftern Fenster des Klienten auf <strong>Browse</strong>.</p>
</div>
<div class="imageblock">
<div class="content">
<a class="image" href="images/audacity_load_config_file.png"><img src="images/audacity_load_config_file.png" alt="Load CONFIG_FILE window" width="640" height="480"></a>
</div>
</div>
<div class="paragraph">
<p>wählen Sie das gerade erstellte Audacity Projekt mit dem Session Namen und mit .aup endend.</p>
</div>
<div class="paragraph">
<p>Das <strong>Configuration File</strong> Feld sollte nun <code>$RAY_SESSION_NAME.aup</code> und das <strong>Arguments</strong> Feld <code>"$CONFIG_FILE"</code> enthalten.<br>
Aktivieren Sie <strong>Wait for a window before being considered ready</strong>, <strong>Ask the user to close the program himself</strong> und <strong>Try to close the window gracefully</strong>. Klicken Sie dann unten rechts auf <strong>Save Changes</strong>.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="images/audacity_ray_hack_final.png" alt="Ray-Hack tab of Audacity client well done">
</div>
</div>
<div class="paragraph">
<p>Starten Sie den Audacity Klienten und versichern Sie sich, dass das Audacity Fenster den Namen der Session hat.<br>
Klicken Sie auf das Symbol für den Audacity Klienten, wählen Sie im Drop-Down Menü <strong>Save as an application template</strong>, und geben Sie in der sich öffnenden Dialog Box <code>Audacity</code> ein. Nun müssen Sie lediglich Audacity wie in <a href="#add_application">Add application window</a> beschrieben wählen, um Audacity in der Session zu starten.</p>
</div>
<div class="paragraph">
<p>Vor dem Speichersymbol des Klienten ist ein orangenes Ausfrufungszeichen, welches bedeutet, dass RaySession nicht in der Lage ist, dieses Projekt zu sichern und Sie dies selbständig machen müssen.</p>
</div>
<div class="paragraph">
<p>Je nach der Anwendung, die sie zur Session so hinzufügen möchten, kann dies auch schwieriger sein. Einige Programme benötigen zB ein Kommando Argument, um eine Konfigurationsdatei zu nutzen. Nutzen sie hierfür im Terminal-Emulator  <code>my_program --help</code> oder <code>man my_program</code> und fügen die entsprechenden Argumente im <strong>Arguments</strong> Feld ein.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_import_an_nsm_session">NSM Session importieren</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Um eine Session, die mit Non Session Manager oder New Session Manager erstellt wurde, zu importieren, kopieren oder verschieben Sie den entsprechenden Session Ordner in den Root Session Folder von RaySession (default ist ~/Ray Sessions). Wenn Sie nun auf  <strong>Open session</strong> klicken, sollte die Session in der Liste der verfügbaren Sessions aufgelistet sein. Doppel-Klicken Sie darauf, um sie auszuwählen.</p>
</div>
<div class="paragraph">
<p>RaySession wird danach hinzugefügte oder entfernte Klienten nicht in  <code>session.nsm</code> speichern, Sie müssen also hierfür auch weiterhin RaySession nutzen.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_the_daemons_options">Die Dämon Optionen</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Die Dämon Optionen sind Services, die durch Klicken auf das <strong>Control</strong> Feld oben rechts im Hauptfenster im Untermenü aktiviert oder deaktiviert werden können. Das Untermenü findet sich ebenso unter options in der Menübar</p>
</div>
<div class="imageblock">
<div class="content">
<img src="images/daemon_options.png" alt="Daemon options">
</div>
</div>
<div class="paragraph">
<p>Die Details zu den jeweiligen Optionen sind die folgenden:</p>
</div>
<div class="sect2">
<h3 id="session_folder_shortcuts">Bookmarks für den Session Ordner erstellen</h3>
<div class="paragraph">
<p>In der Audioproduktion wird häufig eine Audio oder Midi Datei mit einem Program erstellt und dann von einem anderen Program genutzt. Die vorliegende Option bietet hiefür einen praktischen Nutzen: einen Shortcut für den aktuellen Session Folder (Ordner) im Dateimanager und in der Dialogbox, um Dateien zu laden oder zu speichern. Sie vermeiden also den unnötigen Zeitaufwand, sich durch ihren persönlichen Ordner im Dateimanager klicken zu müssen, um eine Datei zu finden, die in ihrem Session Ordner ist.<br>
Dieser Shortcut wird entfernt, sobald die Session geschlossen wird<br>
Dies Option funktioniert technisch für  GTK2, GTK3, QT4, QT5, KDE and FLTK.</p>
</div>
</div>
<div class="sect2">
<h3 id="_auto_snapshot_at_save">Automatisch Snapshot beim Sichern erstellen</h3>
<div class="paragraph">
<p>Dies Option ist alles andere als unbedeutend. Sie ermöglicht Ihnen, bei jeder Speicherung einen Snapshot der Session zu erstellen. Im Falle eines technischen oder künstlerischen Fehlers steht Ihnen also der Snaphot zur Verfügung. Um diese Option zu nutzen, muss  <code>git</code> installiert sein. Unter  <a href="#snapshots">Snapshots</a> finden Sie weitere Details</p>
</div>
</div>
<div class="sect2">
<h3 id="_desktops_memory">Desktop Status</h3>
<div class="paragraph">
<p>Falls diese Option aktiviert ist, wird RaySession auch den virtuellen Desktop, auf dem sich ein Klient Fenster beim Schliessen der RaySession befindet, speichern (oder zumindest wird dies versucht).
Falls Sie die Session oder den Klienten wieder starten, wird das entsprechende Fenster also auf dem Desktop gestartet, auf dem es beim Schliessen zu finden war.
Für diese Option muss die Anwendung <code>wmctrl</code> installiert sein. Unter Wayland wird sie vermutlich nicht funktionieren</p>
</div>
</div>
<div class="sect2">
<h3 id="_session_scripts">Session Skripte</h3>
<div class="paragraph">
<p>Deaktivieren Sie diese Option, um beim Öffnen, Speichern oder Schliessen einer Session diese Skripte völlig zu ignorieren.
Die Skripte werden für <a href="#jack_configuration_memory">JACK Konfiguration erhalten</a> genutzt.
Unter <a href="#session_scripts">Session Skripte</a> finden Sie weitere Details.</p>
</div>
</div>
<div class="sect2">
<h3 id="_remember_optional_gui_states">Optionalen GUI Status erinnern</h3>
<div class="paragraph">
<p>Diese Option betrifft lediglich NSM Klienten, die ihre Fenster sowohl verbergen als auch anzeigen können. Einige Klienten starten immer verborgen, andere starten so, wie sie geschlossen wurden. Wird diese Option aktiviert, werden alle Clienten immer so gestartet, wie sie während der letzten Sicherung beendet wurden. Wurden sie noch nie gestartet, werden sich nicht verborgen gezeigt</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="snapshots">Snapshots</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Für Snaphots muss das Programm <code>git</code> installiert sein. Falls es nicht installiert ist, wird das Reverse Symbol nicht zu sehen sein und es ist unmöglich, Snaphots zu machen oder den entsprechenden Status wieder herzustellen.</p>
</div>
<div class="paragraph">
<p> Der Snapshot speichert Dateien und deren Inhalt zu einger gegebenen Zeit. Grosse Dateien und Dateien mit Dateiendungen für Audio und Video werden ignoriert, da dies zuviel Zeit in Anspruch nehmen würde und der Session Ordner zu gross werden würde. Dies ist kein grosses Problem, im Gegenteil, da ihre erst kürzlich erstellten Audiodateien erhalten bleiben, falls Sie zu einem vorherigen Snapshot zurückkehren. <br>
Sollte trotz all dem der Snaphot Vorgang zu lange dauern, wird sich ein Fenster öffnen und Sie können den aktuellen Snapshot bedenkenlos abbrechen. Der automatische Snapshot wird dann für diese Session nicht mehr stattfinden.</p>
</div>
<div class="paragraph">
<p>Der Nutzen von Snapshots liegt in der Tatsache, dass Sie zu dem Stand der Arbeit zurückehren könne, bevor Sie diese eine brilliante Idee gehabt haben, die sich dann als fruchtlos erwiesen hat, oder bevor sie die Samples neu geschnitten und dadurch alle Musikalität zerstört haben, oder bevor die Anwendung aus unbekannten Gründen anfing abzustürzen. </p>
</div>
<div class="paragraph">
<p>Seien Sie aber sorglos, zu einem Snapshot zurückzukehren heisst nicht, dass Sie den aktuellen Stand nicht ebenso wieder herstellen könnten.</p>
</div>
<div class="paragraph">
<p>Um die Session zu einem Snapshot zurückzusetzen, klicken Sie auf das Reverse Symbol rechts vom <strong>Executable</strong> Feld.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="images/snapshots.png" alt="snapshots">
</div>
</div>
<div class="paragraph">
<p>Wählen Sie in der Auswahl den Snapshot, zu dem Sie zurücksetzen möchten und klicken Sie auf <strong>Ok</strong>. Zunächst wird ein neuer Snapshot erstellt, dann schliesst sich die aktuelle Session, es wird zum Snapshot zurückgekehrt und die Session öffnet sich wieder.</p>
</div>
<div class="paragraph">
<p>Ebenso ist es möglich, lediglich einen Klienten in einen vorherigen Status zurückzusetzen. Wählen Sie nach einem Rechtsklick auf den Clienten im Menü hierfür <strong>Return to a previous state</strong> (zu vorherigem Status zurückkehren).
Falls gewünscht können Sie für jeden Klienten die Dateien, die bei einem Snapshot ignoriert werden sollen, festlegen, indem Sie dies im <a href="#client_properties">Klient Eigenschaften Fenster</a> unter "Snapshot ignored extensions" (bei Snapshots ignorierte Dateiendungen) entsprechend bearbeiten.</p>
</div>
<div class="paragraph">
<p>Ist die Option <strong>Automatic snapshot after save</strong> (automatischer Snapshot beim Speichern) gewählt, wird nach jeder Speicherung der Session ein Snapshot erstellt, ausser es sind keine Änderungen vorhanden. Um Snapshots zu anderen Zeitpunkten zu erstellen, klicken Sie auf das Reverse Symbol rechts vom <strong>Executable</strong> und bestätigen Sie <strong>Take a snapshot now</strong>. Ein Vorteil dieser Methode liegt darin, dass Sie dem Snapshot aufschlussreichere Namen als lediglich Datum und Uhrzeit geben können.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="session_scripts">Session Skripte</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Session Skripte ermöglicht Ihnen, beim Öffnen, Speichern oder Schliessen der Session eigene Aktionen auszuführen. Im besonderen für die Möglichkeit <a href="#jack_configuration_memory">JACK Konfiguration erhalten</a> ist dies nützlich.<br>
Um diese Skripte zu bearbeiten, sind zwar Kenntnisse in Shell Skripting nötig, nutzen kann sie aber jeder.</p>
</div>
<div class="paragraph">
<p>Die Session Skripte befinden sich in dem Ordner <code>ray-scripts</code>, entweder im Session folder oder einem Parent Ordner von diesem. <br>
Eine Session, die sich im Ordner :<br>
<code>~/Ray Sessions/avec_script_de_foo/ma session</code></p><br>
</div>
<div class="paragraph">
<p>findet, kann der Skript Ordner folgende Pfade haben:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code>~/Ray Sessions/avec_script_de_foo/ma session/ray-scripts
~/Ray Sessions/avec_script_de_foo/ray-scripts
~/Ray Sessions/ray-scripts
~/ray-scripts</code></pre>
</div>
</div>
<div class="paragraph">
<p>Der Vorteil, die Skripte in diesen möglichen Pfaden zu haben liegt darin, dass mehrere Sessions diese nutzen können, ohne die Skripte in den jeweiligen Ordner kopieren zu müssen. Ebenso eröffnet dies die  Möglichkeit, jemandem eine nicht geskriptete Session für mögliches Teamwork einfach zu kopieren.<br>
Es wird lediglich der Skript Ordner genutzt werden, der im Pfad dem Session Ordner am nächsten ist. Ein leerer  <code>ray-scripts</code> innerhalb des Ordners der Session selbst wird also alle sonstigen Skripte leicht deaktivieren.</p>
</div>
<div class="paragraph">
<p>Um die Skripte zu bearbeiten, erstellen Sie zunächst eine Session aus der Vorlage mit den Basisskripten. Die Vorlage enthält Skripte, die keine besondere Aktion ausführen werden. Gehen Sie im Session Ordner in den Ordner <code>ray-scripts</code>. Hier finden Sie die Dateien  <code>load.sh</code>, <code>save.sh</code> und <code>close.sh</code>. In jedem dieser Skripte bezieht sich <code>ray_control run_step</code> auf die gewöhnlich ausgeführte Aktion (je nach Skript: Laden, Sichern oder Schliessen der Session). Ist eines dieser Skripte für Sie ohne nutzen, löschen sie das Skript einfach. Es ist unnötig, dies dann zu bearbeiten. </p>
</div>
<div class="paragraph">
<p>Die Skripte müssen zwingend ausführbar sein, also die entsprechenden Rechte haben, um funktionieren zu können.</p>
</div>
<div class="paragraph">
<p>Um einem Klienten eine bestimmte Aktion zuzusprechen, werden Sie vermutlich das Kommando <code>ray_control</code> nutzen. Geben sie in der Kommandozeile <code>ray_control --help</code> ein, um sich einen Überblick zu verschaffen. Mehr Informationen finden Sie unter  <a href="#ray_control">Control RaySession from the command line</a> (RaySession von der Kommandozeile kontrollieren).</p>
</div>
<div class="paragraph">
<p>Die Vorlage JACK memory configuration (JACK Konfiguration erinnern) nutzt Session Skripte, aber es sind viele Aktionen entsprechend ihren Bedürfnissen und Vorstellungen denkbar, z.B.:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>die Reihenfolge festlegen, in der die Klienten gestartet werden sollen, sobald die Session geöffnet wird (ein Beispiel findet sich im Quellcode)</p>
</li>
<li>
<p>ein Backup der Session auf einem externen Datenträger erstellen, sobald die Session geschlossen wird</p>
</li>
<li>
<p>den Fenstern von nicht sicherbaren Klienten den Shortcut  <em>Ctrl+S</em> senden, sobald die Session beendet wird (ein Beispiel findet sich im Quellcode)</p>
</li>
<li>
<p>Das rote Licht beim Betreten des Studios anschalten, und beim Verlassen ausschalten</p>
</li>
<li>
<p>Beim Beenden der Session die Kaffeemaschine einschalten (ein blödes Beispiel, müssen Sie doch den Filter immer noch selbst wechseln)</p>
</li>
<li>
<p>Viele, viele Fehler machen, die ihre Session abstürzen lassen. Seien Sie also entsprechend vorsichtig!</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="jack_configuration_memory">JACK Konfiguration erhalten</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Dank der Session Skripte ist es möglich, die für eine zu ladende Session erstellten Jack Konfigurationen zu erinnern, bzw. wiederherzustellen. Dieses Verhalten erinnert an einige Operationen von LADISH Studios, tut dies, zumindest unserer Meinung nach, aber viel besser.</p>
</div>
<div class="sect2">
<h3 id="_in_which_cases_to_use_it">Anwendungsmöglichkeiten</h3>
<div class="paragraph">
<p>Dies kann nützlich sein wenn:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Sie ein bestimmtes Audio Interface in der Session müssen.</p>
</li>
<li>
<p>Sie an mehreren Projekten arbeiten, die unterschliedliche Sample Rates (Signalverarbeitungsraten) nutzen (eine Session mit 44100 Hz, eine andere mit 44800 Hz)<br>
Sie müssen also JACK nicht selber neu konfigurieren, stoppen und wieder starten. Ausserdem verhindern Sie hierdurch, dies zu vergessen und von einigen Anwendungen entsprechend gewarnt zu werden.</p>
</li>
<li>
<p>Wenn Sie verhindern wollen, eine sehr DSP intensive Session (zB in der Phase des Mixens) mit einem zu kleinen Buffer (z.B. 128) zu laden<br>
Die meisten Audio Interfaces sind aber durchaus in der Lage, die Buffergrösse ohne Neustart (also hot) von Jack zu wechseln.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_usage">Anwendungsweise</h3>
<div class="paragraph">
<p>Die Session Skripte Option muss aktiviert sein (dies ist die Voreinstellung)</p>
</div>
<div class="paragraph">
<p>Um Jack configuration memory (Jack Konfiguration erhalten) zu nutzen, erstellen Sie eine neue Session aus der <strong>With JACK configuration memory</strong> Vorlage.
Es handelt sich de facto um eine geskriptete Session (see <a href="#session_scripts">Session Skripte</a>) die ein Skript startet, das zwar mit RaySession vorhanden, zu diesem aber völlig extern ist, insofern hat RaySession noch immer keine direkte Beziehung zu JACK .</p>
</div>
<div class="paragraph">
<p>Lesen Sie die Informationen im Fenster und bestätigen Sie dann. JACK wird neu gestartet und dann startet ihre Session.</p>
</div>
</div>
<div class="sect2">
<h3 id="_working_principle">Funktionsweise</h3>
<div class="paragraph">
<p>Bei jedem Speichern der Session wird die aktuelle JACK Konfiguration in der Datei <code>jack_parameters</code> gespeichert.<br>
Ist beim Öffnen der Session wird JACK neu gestartet, falls die gespeicherte Konfiguration von der aktuellen unterscheidet. <br>
Wird die Session geschlossen, wird JACK abermals gestartet, diesmal mit der vorherigen Konfiguration.<br></p>
</div>
<div class="paragraph">
<p>PulseAudio → JACK Konfigurationen werden ebenso gespeichert und wiederhergestellt.</p>
</div>
<div class="paragraph">
<p>Wird die Session auf einen anderen Computer kopiert und dort genutzt, wird die Konfiguration von JACK nicht erinnert und beim Speichern überschrieben werden. Lediglich die gespeicherte Samplerate wird genutzt werden.</p>
</div>
</div>
<div class="sect2">
<h3 id="_special_cases">besondere Fälle</h4>
<hr>
<div class="paragraph">
<p><strong>Die gespeicherte JACK Konfiguration einer Session nicht nutzen:</strong></p>
</div>
<div class="ulist">
<ul>
<li>
<p>deaktivieren Sie die <strong>Session scripts</strong> Option</p>
</li>
<li>
<p>Öffnen Sie die Session</p>
</li>
</ul>
</div>
<hr>
<div class="paragraph">
<p><strong>Die JACK Konfiguration einer Session ändern:</strong></p>
</div>
<div class="ulist">
<ul>
<li>
<p>Starten Sie JACK mit der gewünschten Konfiguration.</p>
</li>
<li>
<p>Deaktivieren Sie die Option Session Skripte.</p>
</li>
<li>
<p>Starten Sie die Session.</p>
</li>
<li>
<p>Aktivieren Sie die Option Session Skripte wieder.</p>
</li>
<li>
<p>Speichern Sie die Session.</p>
</li>
</ul>
</div>
<hr>
<div class="paragraph">
<p><strong>In einer bereits bestehenden Session JACK Konfiguration zu ermöglichen</strong></p>
</div>
<div class="ulist">
<ul>
<li>
<p>Kopieren Sie den Ordner <code>ray-scripts</code> aus einer Session mit erhaltener JACK konfiguration in den Session Ordner.</p>
</li>
<li>
<p>Aktivieren Sie die Option Session Skripte.</p>
</li>
<li>
<p>Starten Sie die Session.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p><strong>oder</strong></p>
</div>
<div class="ulist">
<ul>
<li>
<p>Verschieben Sie den Session Ordner in einen Unterordner mit  <code>ray-scripts</code> Ordner.</p>
</li>
<li>
<p>Öffnen Sie die Session.</p>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="under_the_hood">Unter der Haube</h2>
<div class="sectionbody">
<div class="paragraph">
	<p>RaySession ist lediglich eine grafische Oberfläche, GUI, für ray-daemon. Wenn sie RaySession starten, öffnet sich die grafische Oberfläche und verbindet sich mit dem Dämon, und sobald sie die Anwendung schliessen, stoppt diese den Dämon. Die grafische Oberfläche und der Dämon kommunizieren über OSC (Open Sound Control) Meldungen. Dasselbe gilt für den Dämon und die NSM Klienten. Dementsprechend können sie mehrere grafische Oberflächen mit dem Daemon verbinden, auch über das Netz. Tippen Sie <code>raysession --help</code> für die entsprechenden Informationen.</p>
</div>
<div class="paragraph">
<p>Es können mehrere Dämonen gestartet werden. Falls Sie also RaySession starten, wenn bereits eine weitere Instanz gestartet ist, wird ein neuer Dämon gestartet werden. Trotzdem ist diese Vorgehensweise eher ungewöhnlich, die Nutzung nur eines Dämons ist zu bevorzugen. Falls ein Dämon bereits gestartet, ihm aber keine GUI zugewiesen ist, wird sich RaySession per Voreinstellung beim Start mit diesem Dämon verbinden.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="ray_control">RaySession von der Kommandozeile steuern</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Mit dem Kommando <code>ray_control</code> können Sie alles tun, was Sie auch mit in GUI tun können, und ein wenig mehr. Tippen Sie  <code>ray_control --help-all</code> in einem Terminal-Emulator, um alle Möglichkeiten kennezulernen.</p>
</div>
<div class="paragraph">
<p>Falls mehrere Dämonen gestartet sind (siehe <a href="#under_the_hood">Unter der Haube</a>), wird <code>ray_control</code> den zuerst gestarteten in Betracht ziehen, ausser sie bestimmen den OSC Port mit der Option <code>--port</code> oder durch die Umgebungsvariable <code>RAY_CONTROL_PORT</code>.</p>
</div>
<div class="paragraph">
<p>Anzunehmen, <code>ray_control</code> wäre überflüssig, da das Kommando <code>oscsend</code> OSC Mitteilungen an den Dämon schicken kann, ist falsch.<br>
Zum einen kann <code>oscsend</code> zwar Mitteilungen senden, aber keine Informationen auf einfache Weise empfangen (welches sind die aktiven Klienten? Was ist der ausführbare Befehl von einem bestimmenten Clienten? &#8230;&#8203;); und zum anderen, weil <code>ray_control</code> nach dem Ausführen der verlangten Aktion sauber beendet wird. z.B.  <code>ray_control open_session "my session"</code> wird beendet, sobald die Session geladen ist.</p>
</div>
<div class="paragraph">
<p>Seien Sie hier noch einmal daran erinnert, einen globalen Keyboard-Shortcut für den Befehl<code>ray_control save</code> zuzuweisen (<em>Ctrl+Meta+S</em>). Dies wird Ihnen viel Arbeit ersparen.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_frequently_asked_questions">FAQ: Frequently Asked Questions</h2>
<div class="sectionbody">
<div class="paragraph">
<p><strong>Ist die direkte Nutzung von Ardour (oder einer anderen NSM kompatiblen DAW) anstatt in RaySession trotzdem noch sinnvoll?</strong></p>
</div>
<div class="paragraph">
<p>Ausser für wirklich winzige Projekte, eher nein. 
Fall Sie Ardour nutzen, starten Sie es immer in einer RaySession. Erstens können Ihnen die automatisierten Snapshots unerwartet von grossem Nutzen sein, zweitens ist es möglich, dass Sie später  noch eine weitere Anwendung nutzen wollen, auch wenn Sie dies bisher noch nicht geplant haben.</p>
</div>
</div>
</div>
</div>
<div id="footer">
<div id="footer-text">
Last updated 2020-11-13 18:58:39 +0100
</div>
</div>
</body>
</html>
